package A.动态数组;

import java.util.HashMap;
import java.util.Map;

public class _922_按奇偶排序数组 {
    /**
     * 自答：循环遍历数组 双指针--思路很对 但是代码错误
     * @param A
     * @return
     */
    public int[] sortArrayByParityII(int[] A) {

      //  int j=A.length-1;//尾指针 用于交换
        int temp=0;

        for (int i=0;i<(A.length/2);i++){
            if ((i+A[i]) % 2 ==0){//符合
                continue;
            }else {//前指针不符合
                for (int j= A.length-1;j<(A.length/2);j--){
                    if ((j+A[j]) % 2 !=0){//尾指针不符合
                        temp = A[i];
                        A[i] = A[j];
                        A[j] = temp;
                        break;
                    }else {
                        continue;
                    }
                }

            }
        }

        return A;


    }

    /**
     * 为数组的偶数下标部分和奇数下标部分分别维护指针 i, ji,j。随后，在每一步中，如果 A[i]A[i] 为奇数，则不断地向前移动 jj（每次移动两个单位），直到遇见下一个偶数。此时，可以直接将 A[i]A[i] 与 A[j]A[j] 交换。我们不断进行这样的过程，最终能够将所有的整数放在正确的位置上。
     *
     * 作者：LeetCode-Solution
     * 链接：https://leetcode-cn.com/problems/sort-array-by-parity-ii/solution/an-qi-ou-pai-xu-shu-zu-ii-by-leetcode-solution/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     * @param A
     * @return
     */
    public int[] sortArrayByParityII1(int[] A) {

        int j=1;
        int temp=0;

        for (int i=0;i<A.length;i+=2){
            if (A[i] %2 ==1){
                while (A[j] % 2 ==1){
                    j +=2;
                }
                temp = A[i];
                A[i] = A[j];
                A[j] = temp;
            }
        }
        return A;
    }


}
